<?php

/*!
 * \file DefaultController.php
 * \namespace Site\AdminBundle\Controller
 * \class DefaultController
 */

namespace Site\AdminBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Site\ProjetBundle\Entity\Projet;
use Site\UtilisateurBundle\Entity\Utilisateur;
use Site\AdminBundle\Mail\Mail;
class DefaultController extends Controller
{
    public function indexAction($name)
    {
        return $this->render('SiteAdminBundle:Default:index.html.twig', array('name' => $name));
    }
	 /*!
 	*
    * \author Konig Jolan
    *
    * \fn public function phaseAction($ue)
    * \param $ue correspondant à l'UE à gérer.
    * \return gererPhase.html.twig
    *
    * \brief Cette fonction permet dans un premier temps de retourner une vue.
    * \brief Elle gère également les phases d'envoi de mails aux tuteurs, aux étudiant, l'ajout d'étudiant grâce à un fichier csv, l'affectation et la sauvegarde de la BDD.
 	*
 	*/
    public function phaseAction($ue)
    {
	//affichage de l'ue dans L'url (pour savoir à qui les mails seront envoyés)
	if (!$ue)
			return $this->redirect($this->generateUrl("projet_site_phase", array('ue' => 'l2')));
		$request = $this->getRequest();
		$flash = "";
		$alerte = "";
		$afficher = false;
		//si on a activé une des phases automatiques
		if( $request->getMethod() == 'POST' )
		{
			//si c'est pour envoyer un mail
			if($request->request->get('mailRechercheTuteur') OR $request->request->get('mailAvertirEtudiant')OR $request->request->get('mailAvertirPourVoeux')
			OR $request->request->get('mailDemarrerProjet')OR $request->request->get('mailCahierDesCharges') OR $request->request->get('mailTuteurSoutenance'))
			{
				//Gestion des Ue pour modifier le mail en conséquence
				$ue=$request->query->get('ue');
				if($ue=='l2')
				{
					$ueNom="¨Projet Info. L2";
				}
				else if($ue=='l3')
				{
					$ueNom="Projet Info. l3";
				}
				else
				{
					$ueNom="Projet Info.";
				}
				//on récupère le service de mail
				$mailer = $this->container->get('mailer');
				// Création de l'e-mail
				$message = \Swift_Message::newInstance()
				->setFrom('Michel.Meynard@univ-montp2.fr');
				//le mail pour les tuteurs
				if($request->request->get('mailRechercheTuteur'))
				{
					$message->setTo('ens-info@lirmm.fr','ensperminfofds@listes.univ-montp2.fr'); //à remplacer par la liste des tuteurs
					$message->setSubject('recherche tuteurs de '. $ueNom .' au second semestre (3 hetd par étudiant encadré)');
					$message->setBody($this->renderView('SiteAdminBundle:Mail:mailRechercheTuteur.html.twig',array('ueNom'=>$ueNom,'ue'=>$ue)));
				}
				//le mail pour avertir les étudiants que l'UE va commencer
				else if($request->request->get('mailAvertirEtudiant'))
				{
					$message->setTo($ue.'?cc=ens-info@lirmm.fr'); //à remplacer par la liste des étudiants
					$message->setSubject('Début du '.$ueNom.' au second semestre');
					$message->setBody($this->renderView('SiteAdminBundle:Mail:mailAvertirEtudiant.html.twig',array('ueNom'=>$ueNom,'ue'=>$ue)));
				}
				//le mail pour avertir les étudiants qu'ils peuvent choisir leurs voeux
				else if($request->request->get('mailAvertirPourVoeux'))
				{
					$message->setTo($ue.'?cc=ens-info@lirmm.fr'); //à remplacer par la liste des étudiants
					$message->setSubject($ueNom.' : faites vos voeux !');
					$message->setBody($this->renderView('SiteAdminBundle:Mail:mailAvertirPourVoeux.html.twig',array('ueNom'=>$ueNom,'ue'=>$ue)));
				}
				//mail pour indiquer aux étudiants qu'il faut démarrer le projet
				else if($request->request->get('mailDemarrerProjet'))
				{
					$message->setTo($ue.'?cc=ens-info@lirmm.fr'); //à remplacer par la liste des étudiants
					$message->setSubject($ueNom.' : démarrez le projet !');
					$message->setBody($this->renderView('SiteAdminBundle:Mail:mailDemarrerProjet.html.twig',array('ueNom'=>$ueNom,'ue'=>$ue)));
				}
				//le mail pour le cahier des charges
				else if($request->request->get('mailCahierDesCharges'))
				{
					$message->setTo($ue.'?cc=ens-info@lirmm.fr'); //à remplacer par la liste des étudiants
					$message->setSubject($ueNom.' : cahier des charges !');
					$message->setBody($this->renderView('SiteAdminBundle:Mail:mailCahierDesCharges.html.twig',array('ueNom'=>$ueNom,'ue'=>$ue)));
				}
				//le mail aux tuteurs pour les soutenances
				else if($request->request->get('mailTuteurSoutenance'))
				{
					$message->setTo('ens-info@lirmm.fr','ens-info@info-ufr.univ-montp2.fr'); //à remplacer par la liste des tuteurs
					$message->setSubject('soutenances de '.$ueNom);
					$message->setBody($this->renderView('SiteAdminBundle:Mail:mailTuteurSoutenance.html.twig',array('ueNom'=>$ueNom,'ue'=>$ue)));
				}

				//envoie du mail
				$mailer->send($message);
				$flash = "Le mail a été envoyé !";
				$afficher = true;
				$alerte = "success";


			}
			//sinon si on veut supprimer les étudiants
			elseif ($request->request->get('supprEtudiants'))
			{
				$nbLigneSupprimees = $this->nettoyerEtud();

				$flash = "Les etudiants et leurs choix ont été supprimé ! ( $nbLigneSupprimees ) ";

				if($nbLigneSupprimees==0)
					$alerte = "info";
				else
					$alerte = "success";

				$afficher = true; // Variable boolean qui sert à gérer l'affichage (ou non) du message flash
			}



		}
		//url pour renvoyer le formulaire
		$urlFormulaire=$request->server->get('REQUEST_URI');
		return $this->render('SiteAdminBundle:Gestion:gererPhase.html.twig',array('urlFormulaire'=>$urlFormulaire,
																					'flash' => $flash,
																					'alerte' => $alerte,
																					'afficher' => $afficher
																				));
    }

  /*!
   * \author Bassoumi Julia
   *
   * \fn trombiAction()
   * \return trombi.html.twig
   *
   *\brief Récupère une liste d'étudiant dans la BDD et la renvoi à la vue pour un affichage.
   */

  public function trombiAction($id)
  {

      $afficherFlash=0;$typeFlash='';$flash="";
     $em = $this->getDoctrine()->getManager();
     $projet = $em->getRepository('SiteProjetBundle:Projet')->findOneById($id);
     $tousLesUtilisateurs = $em->getRepository("SiteUtilisateurBundle:Utilisateur")->findAll();
     $essaietudiant=$em->getRepository("SiteUtilisateurBundle:Etudiant");
 
     $un=array();
     $deux=array();
     $trois=array();
     $quatre=array();
     $cinq=array();
     $six=array();
     $sept=array();
     $huit=array();
     $resultat=array($un,$deux,$trois,$quatre,$cinq,$six,$sept,$huit);
     $i=0;
     if (!$tousLesUtilisateurs) throw new \Exception("Pas d'utilisateur enregistré.");
   
     foreach ($tousLesUtilisateurs as $etudiant)
     {      
            if ($etudiant->getType()=='e')
            { 
                if ($etudiant->getEtudiant()->getProjet()==$projet)
               {  
                   $resultat[$i][0]=$etudiant->getNom();
                   $resultat[$i][1]=$etudiant->getPrenom();
                   $resultat[$i][2]=$etudiant->getEtudiant()->getPhoto();
                   $i=$i+1;
                }

             }
      }
     $vide=isset($resultat[0][0]);
     if (!$vide) 
    {
          $afficherFlash=1; $typeFlash='danger';$flash="Pas d'étudiant affecté.";
          return $this->render('SiteAdminBundle:Default:trombi.html.twig', array('etudiants' => $resultat,'afficherFlash' => $afficherFlash, 'typeFlash' => $typeFlash, 'flash' => $flash));
    }      
 else
     {
       return $this->render('SiteAdminBundle:Default:trombi.html.twig', array('etudiants' => $resultat,'afficherFlash' => $afficherFlash, 'typeFlash' => $typeFlash, 'flash' => $flash));
     }
   
            
  }




 		/*!
 		*
        * \author Olivier Frappereau, Clément Bringuier
        *
        * \fn private function nettoyerEtud()
        * \return Nombre de ligne renvoyé par la requète nettoyerBDDEtudiant() du repository Utilisateur.
        *
        * \brief Cette fonction supprime les étudiants enregistrer dans la BDD, elle est appelée par la fonction phaseAction().
 		*
 		*/
 		private function nettoyerEtud()
		{

			$repository = $this->getDoctrine()->getManager()->getRepository('SiteUtilisateurBundle:Utilisateur');

			 return $repository->nettoyerBDDEtudiant(); //Retourne le nombre de ligne supprimées

		}

  /*!
  *
  * \author Bassoumi Julia, Hovannes Genjoyan
  *
  * \fn public function mailTousTuteursAction()
  * \return mailTousTuteurEnvoyer.html.twig si le mail est envoyé, mailTousTuteur.html.twig sinon
  *
  * \brief Cette fonction envoie un mail à tous les tuteurs, sinon elle crée un formulaire d'aprés un objet Mail et qu'elle renvoie à la vue.
  *
  */
  public function mailTousTuteursAction()
{
	 $request = $this->get('request');

   if ($request->getMethod()=='POST')
   {
	$ue=$request->query->get('id');
     $projet=$this->getDoctrine()
                  ->getManager()
                  ->getRepository('SiteProjetBundle:Projet');
     //liste des projets
     //$listeprojet=$projet->findBy(array('id'=>$ue));//critére : ue demandée

     $message = \Swift_Message::newInstance()
        ->setSubject($request->request->get('objet'))
        ->setFrom('testenvoimail01@gmail.com')
        ->setBody($request->request->get('corps'))
        ->setTo('testenvoimail01@gmail.com');

     //création et ajout du mail
     /*foreach ($listeprojet as $p)
     {
        $listeUtilisateurs=$p->getUtilisateurs();
        foreach ( $listeUtilisateurs as $utilisateur)
        {
          if ($utilisateur->getType()== 't')
          {
             $nom=$utilisateur->getNom();
             $prenom=$utilisateur->getPrenom();
             $message->addTo($prenom+'.'+$nom+'@lirmm.fr');
          }
        }
      }*/

     $this->get('mailer')->send($message);

     return $this->render('SiteAdminBundle:Default:mailTousTuteursEnvoye.html.twig', array('messag'=>'Votre message a bien été envoyé'));
    }

    else {

			   $mail=new Mail();

		   //création du formulaire
		   $formbuilder=$this->createFormBuilder($mail);
		   $formbuilder->add('objet','text',array('required' => false))
					   ->add('fichier','file',array('required' => false))
					   ->add('corps','textarea');


		   $form=$formbuilder->getForm();

            return $this->render('SiteAdminBundle:Default:mailTousTuteurs.html.twig', array('form'=> $form->createView()));
         }
}


}
